//package org.codert.aspect;
//
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.Around;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Pointcut;
//import org.springframework.stereotype.Component;
//import org.springframework.util.StopWatch;
//
///**
// * 1.切面类
// * 2.切入点(就是条件)
// * 3.连接点
// * @author: TanJingyu
// * @create: 2022-03-09 16:59
// **/
//@Aspect
//@Component
//public class PrintLog {
//
//    /**
//     * 任何public方法
//     */
//    @Pointcut("execution(public * *(..))")
//    public void anyPublic(){}
//
//    /**
//     * 任何以set开发的方法
//     */
//    @Pointcut("execution(* set*(..))")
//    public void startWithSet(){}
//
//    /**
//     * AccountService定义的任何方法
//     */
//    @Pointcut("execution(* com.xyz.service.AccountService.*(..))")
//    public void accountServiceAnyFunc(){}
//
//    /**
//     * com.xyz.service包中定义的任何方法
//     */
//    @Pointcut("execution(* com.xyz.service.*.*(..))")
//    public void packageAnyFunc(){}
//
//    /**
//     * com.xyz.service包中及其子包中定义的任何方法
//     */
//    @Pointcut("execution(* com.xyz.service..*.*(..))")
//    public void packageAndSonAnyFunc(){}
//
//
//
//
//    /**
//     * com.xyz.service包中定义的任何连接点
//     */
//    @Pointcut("within(com.xyz.service.*)")
//    public void packageAnyJoinPoint(){}
//
//    /**
//     * com.xyz.service包及其子包定义的任何连接点
//     */
//    @Pointcut("within(com.xyz.service..*)")
//    public void packageAndSonAnyJoinPoint(){}
//
//    /**
//     * 实现了AccountService的类的连接点
//     */
//    @Pointcut("this(com.xyz.service.AccountService)")
//    public void implementOPointCut(){}
//
//
//
//
//
//
//
//
//    @Around("methodsToBeProfiled()")
//    public Object profile(ProceedingJoinPoint pjp) throws Throwable {
//        StopWatch sw = new StopWatch(getClass().getSimpleName());
//        try {
//            sw.start(pjp.getSignature().getName());
//            return pjp.proceed();
//        } finally {
//            sw.stop();
//            System.out.println(sw.prettyPrint());
//        }
//    }
//
//}
//
//